#include <stdio.h>

int main(){
    int T;
    scanf("%d", &T);
    int n, m;
    while(T){
        scanf("%d%d", &n, &m);
        if(m >= n){
            printf("1");
        }else if(m == 1){
            printf("-1");
        }else{
            n-=m;       //假设最后一次进去m个人；
            m--;		//然后考虑每次进入m-1个人，提前减1，方便后面书写
            int cnt=1;
            cnt+=(n+m-1)/m*2; //n个人，每次进入m个，然后保证上取整
            printf("%d",cnt);
        }
        
        printf("\n");
        T--;
    }
    return 0;
}
/*

题目描述
小A在高中时，学校规定进出校门必须要刷校园卡，否则禁止进入。

某一天，小A和同学们一共n个人去学校附近玩耍，但回学校时他们发现只有m个人带了校园卡，于是他们想到了这样一个策略：
先让m个人带校园卡进入学校，再派一个人带着所有m张校园卡出来，重复上述过程，直到所有人进入学校。 

假设从外面进入学校和从校内出来到校外都需要花费一个单位时间，求所有人都进入学校最少需要花费几个单位时间。


输入格式
第一行包含一个T ，表示测试组数。

以下 T行每行包含两个整数n,m，含义如题目所示。

输出格式
输出T行，每行一个整数，代表最少用时。特别的，若无法让所有人进入学校，输出−1。

数据范围
1 ≤ T≤ 100000,

1 ≤ nm≤≤ 1000000000。
样例
输入数据 
3
6 3
10 10
10 1
输出数据 
5
1
-1

*/